package com.itheima.d6_stream;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

/**
 * 掌握Stream流的中间方法
 */
public class StreamDemo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("有村架纯");
        list.add("Grace");
        list.add("宁姚");
        list.add("陈墨瞳");
        list.add("绘梨衣");
        list.add("宁卿");

        //1.过滤方法
        list.stream().filter(name -> name.startsWith("宁")).forEach(System.out::println);
        System.out.println("----------------");

        //2.排序方法
        List<Double> scores = new ArrayList<>();
        scores.add(99.9);
        scores.add(66.6);
        scores.add(88.8);
        scores.add(77.7);
        scores.add(77.7);
        scores.add(55.5);
        scores.add(33.3);
        scores.stream().sorted().forEach(System.out::println);
        System.out.println("----------------");

        scores.stream().sorted((s1,s2)->Double.compare(s2,s1)).forEach(System.out::println);
        System.out.println("----------------");

        //3.limit:只获取前几个元素
        list.stream().limit(3).forEach(System.out::println);
        System.out.println("----------------");

        //4.skip:跳过前几个元素
        list.stream().skip(3).forEach(System.out::println);
        System.out.println("----------------");

        //5.distinct:去重 如果是自定义对象去重 重写hashcode() 和 equals()方法
        scores.stream().distinct().forEach(System.out::println);
        System.out.println("----------------");

        //6.map：加工/映射
        scores.stream().map(s  ->"减掉十分后：" + (s - 10)).forEach(System.out::println);
        System.out.println("----------------");

        //7.concat:合并流
        Stream<String> s1 = Stream.of("陈墨瞳", "路明非", "楚子航");
        Stream<String> s2 = Stream.of("李槐", "李柳");
        Stream<Integer> s3 = Stream.of(1,2,3,4,5,6);


        Stream<Object> s55 = Stream.concat(s1, s3);
        System.out.println(s55.count());
    }
}
